/**
 * 内存连续的数组
 */

#ifndef clox_vector_h
#define clox_vector_h

#include "common.h"
#define VECTOR_INIT_SIZE 8

typedef struct {
    void* data;         // 元素数组
    int elementSize;    // 元素的大小
    int size;           // 元素个数
    int capacity;       // 数组容量
    CompareFn compare;
} Vector;

int vectorInitCompare(Vector* vector, int elemSize, CompareFn compare);
int vectorInit(Vector* vector, int elemSize);
int vectorAppend(Vector* vector, void* data);
void* vectorGet(Vector* vector, int idx);
void* vectorRemove(Vector* vector, int idx);
int vectorFindFirst(Vector* vector, void* data);
int vectorFindLast(Vector* vector, void* data);
bool isEmpty(Vector* vector);
bool isFull(Vector* vector);

#endif
